.\" Copyright 1999 Andreas Dilger (adilger@enel.ucalgary.ca)
.\"
.\" This file may be copied under the terms of the GNU Public License.
.TH UUIDGEN 1 "June 2011" "util-linux" "User Commands"
.SH NAME
uuidgen \- create a new UUID value
.SH SYNOPSIS
.B uuidgen
[options]
.SH DESCRIPTION
The
.B uuidgen
program creates (and prints)
a new universally unique identifier (UUID) using the
.BR libuuid (3)
library.  The new UUID can reasonably be considered unique among
all UUIDs created on the local system,
and among UUIDs created on other systems in the past
and in the future.
.PP
There are three types of UUIDs which
.B uuidgen
can generate: time-based UUIDs, random-based UUIDs, and hash-based UUIDs.
By default
.B uuidgen
will generate a random-based UUID if a high-quality random number
generator is present.  Otherwise, it will choose a time-based UUID.
It is possible to force the generation of one of these first two
UUID types by using the
.B \-\-random
or
.B \-\-time
options.
.PP
The third type of UUID is generated with the
.B \-\-md5
or
.B \-\-sha1
options, followed by
\fB\-\-namespace\fR \fInamespace\fR
and
\fB\-\-name\fR \fIname\fR.
The \fInamespace\fR may either be a well-known UUID, or else
an alias to one of the well-known UUIDs defined in RFC 4122, that is
.BR @dns ,
.BR @url ,
.BR @oid ,
or
.BR @x500 .
The \fIname\fR is an arbitrary string value.  The generated UUID is the
digest of the concatenation of the namespace UUID and the name value, hashed
with the MD5 or SHA1 algorithms.  It is, therefore, a predictable value
which may be useful when UUIDs are being used as handles or nonces for
more complex values or values which shouldn't be disclosed directly.
See the RFC for more information.
.SH OPTIONS
.TP
.BR \-r , " \-\-random"
Generate a random-based UUID.  This method creates a UUID consisting mostly
of random bits.  It requires that the operating system has a high
quality random number generator, such as
.IR /dev/random .
.TP
.BR \-t , " \-\-time"
Generate a time-based UUID.  This method creates a UUID based on the system
clock plus the system's ethernet hardware address, if present.
.TP
.BR \-h , " \-\-help"
Display help text and exit.
.TP
.BR \-V , " \-\-version"
Display version information and exit.
.TP
.BR \-m , " \-\-md5"
Use MD5 as the hash algorithm.
.TP
.BR \-s , " \-\-sha1"
Use SHA1 as the hash algorithm.
.TP
.BR \-n , " \-\-namespace " \fInamespace\fP
Generate the hash with the \fInamespace\fP prefix. The \fInamespace\fP is UUID,
or '@ns' where "ns" is well-known predefined UUID addressed by namespace name
(see above).
.TP
.BR \-N , " \-\-name " \fIname\fR
Generate the hash of the \fIname\fR.
.TP
.BR \-x , " \-\-hex"
Interpret name \fIname\fR as a hexadecimal string.
.SH CONFORMING TO
OSF DCE 1.1
.SH EXAMPLES
uuidgen \-\-sha1 \-\-namespace @dns \-\-name "www.example.com"
.SH AUTHORS
.B uuidgen
was written by Andreas Dilger for libuuid.
.SH SEE ALSO
.BR libuuid (3),
.B "RFC 4122"
.SH AVAILABILITY
The uuidgen command is part of the util-linux package and is available from
https://www.kernel.org/pub/linux/utils/util-linux/.
